/**
 * promisic 函数：将基于回调的异步 API 转换为返回 Promise 的函数
 * @param {Function} fn - 原始的异步 API 函数，通常接受一个对象参数，其中包含 success 和 fail 回调
 * @returns {Function} - 返回一个新的函数，该函数在调用时返回 Promise 对象
 */
export function promisic(fn) {
  return function (options = {}) {
    return new Promise((resolve, reject) => {
      // 合并传递的 options，然后覆盖 success 和 fail 回调
      const newOptions = Object.assign({}, options, {
        success: (res) => {
          resolve(res);
        },
        fail: (err) => {
          reject(err);
        },
      });
      // 调用原始异步 API 函数
      fn(newOptions);
    });
  };
}
